[ Вопрос дня ] Можно ли в расширении изменить свойство “Проверка заполнения” реквизита документа?

Доброго дня, коллеги!

Далеко не все свойства реквизитов документа являются расширяемыми. В качестве альтернативного варианта можно рассмотреть программное изменение значений свойств в расширении. Именно такой вариант тренер предложил слушателю в рамках темы “Доработка управляемых форм в расширениях” курса «Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки».

Вопрос

Здравствуйте, вопрос следующий. В документе в табличной части есть реквизит Характеристика со свойством “Проверка заполнения”, значение которого установлено как “Выдавать ошибку”. Перенес этот реквизит в расширение, но свойства этого реквизита не доступны для редактирования. Хотел для него в расширении проставить значение “Не проверять”.

Ответ

Добрый день! Вы не сможете поменять свойство “Проверка заполнения” в расширении у заимствованного реквизита, но можете изменить обработку ОбработкаПроверкиЗаполнения() в модуле объекта через расширение, так чтобы реквизит, даже не заимствованный, не проверялся. Вот пример кода:

ИндексПоляПоставщик = ПроверяемыеРеквизиты.Найти("ДенежныеСредства.Касса");
Если ИндексПоляПоставщик <> Неопределено Тогда
    ПроверяемыеРеквизиты.Удалить(ИндексПоляПоставщик);
КонецЕсли;

Комментарии / обсуждение (10):

  1. Николай

    Добрый не подскажите, как сделать проверку поля, чтобы оно при записи выдавало сообщение (Поле не заполнено), но при этом тем не менее документ записывался? Вот код
    Процедура ПроверитьЗаполнениеКонтактныхЛиц(Отказ)
    Для Каждого ДанныеКонтактногоЛица Из ДанныеКонтактныхЛиц Цикл
    Если ПустаяСтрока(ДанныеКонтактногоЛица.Наименование) Тогда
    Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = НСтр(“ru = ‘Вы забыли заполнить поле ФИО. ‘”);
    Сообщение.Поле = “ФИО”;
    Сообщение.Сообщить();
    Отказ = Истина;
    Продолжить;
    КонецЕсли;
    КонецЦикла;

    • Василий Ханевич

      Добрый день!
      Не рекомендуется использовать такой вариант при работе с управляемыми формами. Дело в том, что на форме документа есть кнопка Провести и закрыть (или Записать и закрыть), при нажатии на которую форма документа закроется, сформированное сообщение пользователь просто не увидит.
      Поэтому если нужно выдать сообщение, то лучше отменять проведение или запись документа, выставляя флаг Отказ в значение Истина.

  2. Илья

    В ЗУП хочу отменить проверку заполнения таб части НачислениеОценочныхОбязательствПоОтпускам.РасчетРезерваОтпусков

    Добавил в расширении процедуру &Вместо(“ОбработкаПроверкиЗаполнения”)
    ПроверяемыеРеквизиты = Новый Массив;
    Отказ = Ложь;
    Все равно ругается , что нельзя проводить,т.к. таб часть не заполнена. Как так?
    Отладчиком вижу, что там код проходит.

    • Василий Ханевич

      Добрый день!
      Проверки также могут быть реализованы в процедурах ПередЗаписью или ОбработкаПроведения. В них тоже параметр Отказ может быть выставлен в значение Истина. Проверьте такой вариант.

      • Илья

        Спасибо за ответ.
        Я использовал отладчик – делал замер и смотрел где выполняется код. Так вот код выполнялся ТОЛЬКО в процедурах расширения. При этом одна из процедур находилась в общем модуле. По идее где то должна быть ссылка на эту процедуру, но в отладчике ее не было.
        Последнее время замечаю, что отладчик выдает информацию, что выполнялся код комментария. Наверно глюки какие.
        Если будет время попробую разобраться. Я пока вышел другим способом из затруднения.

        • Василий Ханевич

          Это ненормально, что отладчик позиционируется не на той строке кода, которую на самом деле выполняет.
          Можно попробовать закрыть все клиентские приложения, работающие с этой базой, перезапустить службу сервера 1С:Предприятия, очистить локальный кэш метаданных на компьютере. После этого заново запустить конфигуратор и открыть под отладкой клиентское приложение. После таких манипуляций должно заработать в штатном режиме.

  3. igor

    Здравствуйте.
    А как быть в случае, если у реквизита установлен признак “неотрицательный”, а есть необходимость заполнять его отрицательными значениями? При попытке изменить это значение в расширении выдается ошибка применения расширения и предлагается ее исправить.
    заранее спасибо за ответ.

  4. igor

    Добрый день
    Добавил расширение в него добавил документ и форму в форме есть обязательные для заполнения реквизиты (свойство выдавать ошибку) При записи документа с пустыми значениями в этом поле – происходит запись сообщения, что реквизит не заполнен не выдается. Что может быть не так?

    • Василий Ханевич

      Добрый день!
      Попробуйте провести документ с пустым значением этого реквизита. В таком случае система выдаст ошибку.
      Если для документа проведение разрешено, то автоматическая проверка заполнения реквизитов выполняется перед проведением.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.